package common;


import io.github.bonigarcia.wdm.WebDriverManager;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.*;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeOptions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.Duration;

public class Utils {
     public static WebDriver webDriver;

     public static String detailPageUrl = "http://113.45.55.63:8090/blog_detail.html?blogId=16";

    public WebDriverWait wait;

    /**
     * 构造器构造设置url 和 显式等待
     */
     public Utils(String url) {
//         设置需要访问的url
         WebDriver driver = getWebDriver();
          driver.get(url);

//          显式等待
          wait = new WebDriverWait(driver,Duration.ofSeconds(5));
     }

    /**
     * 实例化 WebDriver
     * @return 返回 WebDriver 对象
     */
    public static WebDriver getWebDriver() {
         /**
          * 单例模式实例化WebDriver对象
          */
         if (null == webDriver) {
             /**
              * 1. 在驱动管理程序中设立edge 浏览器驱动
              */
             EdgeOptions edgeOptions = new EdgeOptions();

             /**
              * 2. 设置允许访问所有的界面的权限
              */
             edgeOptions.addArguments("--remote-allow-origins=*");

             /**
              * 3. 自定义浏览器句柄
              * 并且要把配置加入到参数中
              */
             webDriver = new EdgeDriver(edgeOptions);


             /**
              * 4. 设置隐式等待
              */
             webDriver.manage().timeouts().implicitlyWait(Duration.ofSeconds(4));
         }
          return webDriver;
     }


    /**
     * 屏幕截图
     */

    public static void screenCapture(String fileName) throws IOException {
//        文件路径： /blog_ui_test/src/test/java/pic + 2025-4-14 + 094722 + fileName
//        使用时间区分

            /**
             *
             * 校验 WebDriver 是否关闭
             * 如果关闭就抛异常
             *
             */
            if (null == webDriver) {
                System.out.println("screenCapture->WebDriver已关闭!");
                return;
            }


            /**
             * 2.处理弹窗
             */

            try {
                Alert alert = webDriver.switchTo().alert();
                alert.accept();
            } catch (NoAlertPresentException e) {
                    // 代码走到这里代表弹窗未出现
            }

            /**
             * 3. 获取时间格式
             */
            SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
            SimpleDateFormat format2 = new SimpleDateFormat("HH.mm.ss.SS");

            String t1 = format1.format(System.currentTimeMillis());
            String t2 = format2.format(System.currentTimeMillis());


            /**
             * 2. 获取新的文件名
             */
            String newFileName = "./src/test/java/pic/" + t1 + "/" + t2 + "_"+ fileName + ".png";

            /**
             * 3. 创建文件并保存
             */
            File srcFile = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
            File newFile = new File(newFileName);
//        如果父目录不存在
//        就创建新的目录
            /**
             * getParentFile 用于获取父目录
             * 应该从父目录中判断并且创建
             */
            File parentFile = newFile.getParentFile();
            if (!parentFile.exists()) {
                parentFile.mkdirs();
            }

            // 拷贝新文件到旧文件
            FileUtils.copyFile(srcFile,newFile);


    }


    public static void close() {
        webDriver.quit();
    }
}
